home *** CD-ROM | disk | FTP | other *** search
/ C & C++ Multimedia Cyber Classroom / C and C++ Multimedia Cyber Classroom (Prentice Hall) (1998).iso / src / fig16_14.jar / Ch16 / Fig16_14 / Fig16_14.cpp
C/C++ Source or Header  |  1997-11-10  |  1KB  |  48 lines

  1. // Fig. 16.14: fig16_14.cpp
  2. // Example using a bit field 
  3. #include <iostream.h>
  4. #include <iomanip.h>
  5.  
  6. struct BitCard {
  7.    unsigned face : 4;
  8.    unsigned suit : 2;
  9.    unsigned color : 1;
  10. };
  11.  
  12. void fillDeck( BitCard * );
  13. void deal( BitCard * );
  14.  
  15. int main()
  16. {
  17.    BitCard deck[ 52 ];
  18.  
  19.    fillDeck( deck );
  20.    deal( deck );
  21.    return 0;
  22. }
  23.  
  24. void fillDeck( BitCard *wDeck )
  25. {
  26.    for ( int i = 0; i <= 51; i++ ) {
  27.       wDeck[ i ].face = i % 13;
  28.       wDeck[ i ].suit = i / 13;
  29.       wDeck[ i ].color = i / 26;
  30.    }
  31. }
  32.  
  33. // Output cards in two column format. Cards 0-25 subscripted 
  34. // with k1 (column 1). Cards 26-51 subscripted k2 in (column 2.)
  35. void deal( BitCard *wDeck )
  36. {
  37.    for ( int k1 = 0, k2 = k1 + 26; k1 <= 25; k1++, k2++ ) {
  38.       cout << "Card:" << setw( 3 ) << wDeck[ k1 ].face 
  39.            << "  Suit:" << setw( 2 ) << wDeck[ k1 ].suit 
  40.            << "  Color:" << setw( 2 ) << wDeck[ k1 ].color 
  41.            << "   " << "Card:" << setw( 3 ) << wDeck[ k2 ].face
  42.            << "  Suit:" << setw( 2 ) << wDeck[ k2 ].suit 
  43.            << "  Color:" << setw( 2 ) << wDeck[ k2 ].color 
  44.            << endl;
  45.    }
  46. }
  47.  
  48.